package com.scfire.project

import java.util.Date;
import java.util.SortedSet;

import org.grails.databinding.BindingFormat

import com.scfire.security.Member
import com.scfire.fund.FDonate
import com.scfire.fund.FOperate
/**
 * Copyright 2015 Shudao Info Tech Co. Ltd.  All rights reserved.
 * @author lhzeng
 * @email zenglh@haoshudao.com
 * @date 2015年6月7日 下午3:28:32
 * @version V1.0
 */

class Project implements Comparable {
	
	//项目名称
	String name
	//项目描述
	String description
	//项目详解介绍
	String detail	
	//项目海报
	String img
	//筹款目标金额
	float amount
	//筹款剩余金额
	float rest
	//申请拨款次数
	int apliNum=0
	//项目状态
    //1、保存状态显示/草稿draft  2、提交后显示/审核中wait  3、审核不通过显示/不通过refuse 4、 项目审核失败/退回修改 modify
	//5、审核通过显示/筹款中pass  6、项目筹款满显示execute  7、项目超期未筹满显示/已过期expired 8、项目执行中申请结项并通过显示/已结束over
	//9. 执行中 doing
	String verified
	
	//项目进度 100表示100%,进度=100-(剩余金额/目标金额)*100
	float progress = 0
	
	//捐赠人数
	int donateNum = 0
	
	//计划募集天数
	int donateTimelimit = 0;
	
	//PC 图文
	String projectDetail;
	
	//第一次审核状态记录
	String approveStatus = "false";
	
	//项目创建时间
	@BindingFormat('yyyy-MM-dd HH:mm')
	Date createDate
	//项目更新时间
	@BindingFormat('yyyy-MM-dd HH:mm')
	Date updateDate
	
	//项目众筹开始时间
	@BindingFormat('yyyy-MM-dd HH:mm')
	Date startDate
	//项目众筹结束时间
	@BindingFormat('yyyy-MM-dd HH:mm')
	Date endDate
	
	//项目排序的描述图片
	SortedSet projectPics
	//项目反馈信息集
	SortedSet projectFeedbacks
	//项目排序的评论信息
	SortedSet comments
	
	//捐赠信息列表
	SortedSet donates
	
	
	//一起捐人次
	int sbuProjectSize =0
	
	//配捐人次
	int fDonateSize=0
	
	//实际捐款总额
	float realAmount
	
	//新的慈善法要求有项目有地域
	String address
	
	//操作记录
	SortedSet foperates
	//项目发起人,项目归属类
	//归属用户
	int member
	
	// 所属类型
	int mainCate
	
	String qrCode
	
	//static belongsTo = [member:Member,mainCate:MainCate]
	//项目图片,项目募集清单,项目评论,项目捐赠信息,项目反馈信息,一起捐子项目列表,配捐信息
	//static hasMany = [foperates:FOperate,projectPics:ProjectPic,fundraises:Fundraise,comments:Comment,donates:Donate,projectFeedbacks:ProjectFeedback,subProjects:SubProject,fdonates:FDonate]
    static constraints = {
		
		name nullable:false
		description nullable:true
		detail nullable:true
		img nullable:true
		amount nullable:true
		rest nullable:true
		verified nullable:true
		progress nullable:true
		donateNum nullable:true
		projectDetail nullable:true
		approveStatus nullable:true
		apliNum nullable:true
		createDate nullable:true
		updateDate nullable:true
		startDate nullable:true
		endDate nullable:true
		donateTimelimit nullable:true
		
		member nullable:true
		mainCate nullable:true
		
		projectPics nullable:true
		projectFeedbacks nullable:true
		//fundraises nullable:true
		comments nullable:true
		donates nullable:true
		//subProjects nullable:true
		//fdonates nullable:true
		fDonateSize nullable:true
		sbuProjectSize nullable:true
		realAmount  nullable:true
		address nullable:true
		qrCode nullable:true

    }



	public int compareTo(Object o) {
		try{
			createDate.compareTo(o?.createDate)
		}catch(Exception e){
			return 1
		}
	}
}
